о когда я сделал своего героя в нём, то в игре он почему то не используется, в редакторе выставляешь юнита на карту, но при проверке карты, его просто нет.
Ты открыл карту из редактора кампании?
Если нет - поэтому и не отображается.
Нашёл решение для тебя.
Пол-ночи провозился, но нашёл. почему-то это стало делом чести - открыть сию карту в редакторе
В общем, берёшь архив из аттача и тупо суёшь папку UI в корень варкрафта. После этого карта будет открываться любым вариантом редактора - как JNGP (любым), так и (даже!) стандартным.
Важно: локальные файлы должны быть разрешены.
Только там такой срач и дичь, что лучше реально своими руками с нуля писать...
Ни разу не делал карты "чисто стандартного жанра". Т.е. общий жанр определить можно всегда, но нужно чтобы можно было выделить что-то, чем твоя карта реально отличается от себе подобных.
Вот, глянь чуть (щас набегут хомячки с возгласами ОЛОЛО РЕКЛАМА ДОК БЛИН КАК НЕ СТЫДНА)
Gerych, сюда тоже можно но вопрос будет закрыт через неделю с момента последнего ответа
ну а вообще для таких вещей стоит создать бложик и там в качестве ресурса подобное спрашивать
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
А функция TriggerRegisterEnterRectSimple в теории не утечна, но на практике может утекать, например, если в потоке триггера будет вызвано её уничтожение RemoveRegion(GetTriggeringRegion()).
в настройках редактора нужно изменить параметры создания новой карты на старте и автоматического создания новых окон инструментов на выкл
плюс выключайте дерево юнитов и прочего, которое слева внизу
а если инструменты лагают из-за того, что у вас много юнитов\декораций и т.п., это никак не исправить
переписать вар\купить комп не считается
Тестировал на обоих версиях варика(путем изменения пути в реестре), у меня их 4 вообще. 1.26a - ru, 1.27b - en, 1.30.1, 1.30.2 ApEJI:
Да у него английские ве, вот и не видит шрифт
Сейчас 2018 и в новом приложении/игре такого быть не может, но вспомните как мы пользовались хп, и довольно часто видели такие баги у ровесников варкрафта
Попробуй в mdlvis'е увеличить модель в 10 раз, сохрани, открой в war3 me, рассчитай границы, сохрани, опять зайди в mdlvis и уменьши модель в 10 раз.
Может помочь, а может и нет. Другого способа пока нет.
вообщем там проблема оказалась в другом, расчет границ помогал, просто я стандартные модели деревьев пытался заменить на отредактированные , но они не менялись.
После добавления новых файлов в менеджер импорта, нужно сохранить карту или перезапустить редактор. Если после этого все равно зеленый квадрат - вы сделали что-то не правильно.
Нету в карте триггера на стакание предмета, но есть непонятный триггер дропа:
Как понимаю, он должен работать лишь для определённого вида героев, которых автор зачем-то удалил, но не суть, главное, что вообще нет триггера на стакание предметов. Зато есть Руна Исцеления, которую советовал Bergi_Bear, есть две хилки, которые советовал PT153. Александр19, не верю, что ты вообще нуб в триггерах, так как что-то там составляешь, скорее ты просто удалил триггер из неё, ради которого у тебя карту и просили. Честно скажу, что ты неадекватный. Но мы здесь не для диагнозов, а чтобы на вопросы отвечать, потому вот здесь xgm.guru/p/wc3/193169 возьми систему сложения и разъединения предметов, оттуда скопируй себе в карту триггеры PickUp, AddOrDiv и включи их. Там всё подробно описано, просто сменишь Камень Здоровья на свою хилку. А главное, дроп происходит из-за триггеров OgrItemBoss2 и OgrItemBoss3. Отключи их.
массив из пяти типов предметов, при событии "юнит получает предмет" смотрим наличие предмета с типом из массива в каждом слоте по очереди, если есть хоть один, то выбрасываем полученный предмет на землю
Smart096, баг только в этой карте?
в новых картах бага нету?
если да то стоит проверить импортируемые модели и текстуры (мб часть битая)
но с вероятностью в 60% проблема в системе ибо было много жалоб на баги в вин10
Юнитов поднимает тогда же, когда и опускает, потому что я удаляю их из DedG[3], но забываю удалить из группы снарядов, таким образом, к тем кто попал под падение, уже навечно задействован акт снарядов(опускание), пока они в DedG[3]
Есть проверка IsUnitDead, где проверяется тип и состояние IsUnitType(u, UNIT_TYPE_DEAD) но никогда не было проблем с проверкой хп.
Так же насколько я помню GetWidgetLife( unit ) > 0.0 или GetUnitState( unit, UNIT_STATE_LIFE ) > 0.405.
Пока нет желания разбираться, что у тебя так, а что не так. Но вижу, что переменная Window не назначена окну, а ещё как бы создаются в цикле одновременно 10 окон, которые потом все одновременно ждут 50 секунд. Вот скрин действий триггера вместо двух твоих, секунда ожидания поставлена для того, чтобы увидеть пропадание окна таймера.
Это событие срабатывает лишь при старте карты, чтобы сделать срабатывание, когда после потасовки остаётся один юнит, логично было бы сделать событие Generic unit Умирает. В условии учитываются не только живые юниты, но и их трупы, пока не разложатся, то есть будет срабатывать событие юнит Умирает, в условии юнитов в области будет больше 1, так как будут считаться мёртвые юниты, триггер так и не будет срабатывать, если через минуту какой-то юнит на карте не умрёт. Потому в условии нужно указывать не просто юнитов в области, а юниты в области matching condition, где поставишь (Matching unit) is alive равно Да. А чтобы не учитывались здания и призванные юниты, нужно вместо условия (Matching unit) is alive равно Да выбрать в низу списка And, появится два условия, в первое ставишь (Matching unit) is alive равно Да, во второе опять And и аналогично выбираешь, (Matching unit) is Здание равно Нет и что-то такое же на призванных (summon).
Только в действии тоже укажи, что живой, не Здание и не призванный, а то кого-то из них может убить.
Бтв, про сбор команды - для продвинутых сущностей нередко исправлять за другими оказывается тяжелее, чем делать самому, важно создать максимально комфортные условия для созидания, вот для чего деньги не лишние, а уж дело и самому можно делать.
И, да, тема-то не про то, надо это или не надо, а про то, как лучше это сделать, я про это и в стартовом сообщении написал.
Я на крайний сам вопрос по варианту 3 проверю и/или будет сделан выбор между третьим вариантом, вторым, каким-то ещё и отказом от Cooldown Reduction, но если кто поможет - спасибо.
то скорость разная, то вылетают не из героя а из какой то псевдо центральной точки
в общем я полностью добился желаемого результата, никакого прерывания, ни каких лагов и странных поведений (то что снаряды врезаются в трупы так и задумано =))
вот мой код
//! beginusercode
--какие то общие функции
function MoveX (x, Dist, Angle)
return x+Dist*Cos(Angle*0.0175)
end
function MoveY (x, Dist, Angle)
return x+Dist*Sin(Angle*0.0175)
end
function AbilityId(id)
return id:byte(1) * 0x1000000 + id:byte(2) * 0x10000 + id:byte(3) * 0x100 + id:byte(4)
end
function Out(x,y)
return ( ( GetRectMinX(bj_mapInitialPlayableArea) <= x ) and ( x <= GetRectMaxX(bj_mapInitialPlayableArea) ) and ( GetRectMinY(bj_mapInitialPlayableArea) <= y ) and ( y <= GetRectMaxY(bj_mapInitialPlayableArea) ) ) or IsTerrainPathable(x, y, PATHING_TYPE_WALKABILITY) == false
end
GetTerrainZ_location = Location(0, 0)
function GetTerrainZ(x,y)
MoveLocation(GetTerrainZ_location, x, y);
return GetLocationZ(GetTerrainZ_location);
end
function ehandler( err )
print( "ERROR:", err )
end
--/////// глобалки (хотя какая разница где объявить то)
perebor=CreateGroup()
--/////// триггер
local trigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1, 1 do
TriggerRegisterPlayerUnitEvent(trigger, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT)
end
TriggerAddCondition(trigger, Condition(function() return
GetOwningPlayer(GetTriggerUnit()) == Player(0)
end))
local d=0
TriggerAddAction(trigger, function()
local u=GetTriggerUnit()
local z=GetTerrainZ(GetUnitX(u),GetUnitY(u))
print("perodstart")
TimerStart(CreateTimer(), 0.1, true, function()
d=d+1
--print("abiclick "..d)
-- будущая фукция запуска снаряда
local x=GetUnitX(u)
local y=GetUnitY(u)
local eff=AddSpecialEffect("Abilities\\Weapons\\DemolisherFireMissile\\DemolisherFireMissile.mdl", x, y)
local d2=1000
local a=GetUnitFacing(u)
TimerStart(CreateTimer(), 0.032, true, function()
d2=d2-10
x=MoveX(x,25,a)
y=MoveY(y,25,a)
BlzSetSpecialEffectPosition(eff, x, y, GetTerrainZ(x,y)+30)
-- урон
local e=nil
GroupEnumUnitsInRange(perebor,x,y,80,null)
while true do
e = FirstOfGroup(perebor)
if e == nil then break end
if IsUnitEnemy(e, GetOwningPlayer(u)) then
UnitDamageTarget( u, e, BlzGetUnitBaseDamage(u, 1), false, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_FIRE, WEAPON_TYPE_WHOKNOWS )
-- print("наносим урон")
DestroyEffect(eff)
eff=nill
end
GroupRemoveUnit(perebor,e)
end
--print(d2)
if d2<=0 or Out(x,y)==false or eff==nil then
-- print("УМРИ!")
DestroyEffect(eff)
DestroyTimer(GetExpiredTimer())
end
end)
end)
end)
//! endusercode
а вот и карта
Выражаю огромную благодарность NazarPunk, и Prog за оказанную помощь и наставления
Выводы:
Более навороченные (в техническом плане) способы не всегда самые оптимальные
Точно также можно двигать эффекты и на мемхаке, так что 126 пат так же может удостоится высокой производительностью для огромного количества снарядов
Мой комп держит на 1 экране около 700 объектов в режиме 60+ FPS (с отключенной вертикальной синхронизацией, это когда макс фпс за 200)
Ну задай рандомную переменную от 1 до 6 и дропай предмет из слота под этим номером
Единственная проблема - если у носильщика меньше 6 слотов, то появляется вероятность не дропнуть ничего, ну тут можно циклом как-то, типа если дропнутый предмет = нет предмета, повторить (ток еще, чтобы цикл не мог стать вечным, проверить, что у юнита хоть 1 предмет вообще есть)
Naadir, Ну хаком на память, чтобы совсем пассивка не кликабельная, только мемхак. Ну есть еще костыль с перерождением, если убить его владельца то пойдет кд. Иначе костыль с активкой.
Так же как уровень любой способности - Set Level Of Ability/Increase Level Of Ability.
Если спеллбук предметметный, уровень сбросится если выбросить книгу.
Сначала добавь все способности, которые тебе нужны, в книгу заклинаний. Во время инициализации карты заблокируй для игрока способности, которые открываются при выполнении заданий.
Там есть для Игрока (или Игры) действие Force UI Key. Назначаешь горячую клавишу книге и при событии выбора указываешь в этом действии свою клавишу.
Только событие выбора может реагировать с небольшой задержкой, достаточной, чтобы рассмотреть кнопки на панели приказов. Если это надо обойти, есть два варианта:
периодическим таймером на 0.03 секунды проверять, выбран ли юнит;
сделать два одинаковых типа юнитов, один из которых с классификацией страж, при выборе стража накладывать морф и открывать книгу (может потребоваться задержка), при снятии выбора накладывать обратный морф. Статья про морфы есть у quq_CCCP.
Stalker5500, как ты описал- должно работать.
Только сделай в событие либо только Нейтрально-враждебный умирает, либо Событие- боевая единица умирает, а в условие- Владелец умирающего - Нейтрально-враждебный.
А дальше в действиях есть такая конструкция в разделе Общие параметры if/then/else. Используй ее и будет тебе счастье
Оплетенные рудники считаются транспортом. Светлячков, которые находятся в них, можно отловить условиями Unit Is Being Transported и Unit Is In Transport.
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
Во первых нужно создать переменную типа boolean и два тригера при нажатии esc boolean = true выключаем первый тригер включаем второй, во втором при нажатии esc boolean=false и перед каждым проигрыванием синематик если boolean=true то ничего не делаем иначе выключаем и сворачиваемся. Как то так.. Не совсем понял что ты хочешь, но предположил что при нажатии еск должен скиповаться ролик. В общем суть объяснил дальше сам )
Melissa, Короче я разобрался - все проблемы были из-за переменной Total_Num_Players, она была подбита под живых игроков, а так как я был единственным живым игроком, то давала строку равную 1 (то есть 0+1 я). В общем спасибо, не додумал бы без твоей помощи до своей ошибки(у тебя ведь создаётся по заданому числу количество строк).
PT153, это лимит для одного игрока, то есть героя смогут нанять другие.
Нужно поставить таверне способность Продажа войск. Потом делаешь триггер:
Событие: Юнит вошёл в область (Вся игровая карта)
Условие: Триггеринг юнит равно Герой равно Да (можно этого не делать, просто исключает срабатывание триггера для каждого юнита)
Действия: несколько действий Если/То/Иначе
Если - Юнит тип (Триггеринг юнит) равно Какой-то Герой Из Таверны
То - Нейтральное здание - Удалить Какой-то Герой Из Таверны из таверны
Иначе - Ничего
И так для каждого типа героев в таверне.
Потому что огромный Нестандартные объекты может тысяч или больше или Спелл герой до 100 уровень.
из них 60 загрузка просто висит на 1/5.
Если нетак? Проверь если есть файлы war3map.j папка Game\WarcraftIII, надо удалить файл. очень давно тоже 1 раз что за вылет или неправильно выполняет триггер.
Есть способы ускорить загрузку карты не экономя в редакторе объектов
Есть Widgetizer, там очень быстрая загрузка игра, но плохо работает спелл или текст.
Я сам разобрался с проблемой. Конечно тут две новые появились, но на них забью уже:
ИИ не нравился герой, из-за него вообще никто не нанимался.
ИИ посчитал, что улучшив главное здание, он лишается главного здания, а значит нужно его снова строить. То есть, например, улучшив ратушу до крепости, он считает, что ратуши больше нет и необходимо построить ещё одну. Потом он крепость улучшит до замка, посчитает, что разрушили крепость, улучшит до крепости ратушу№2, снова потеряет ратушу и построит уже третью.
» WarCraft 3 / Не открывается обычный редактор
» WarCraft 3 / Жанр для карты
» WarCraft 3 / Как увеличить высоту декорации?
» WarCraft 3 / Проверка условия на вход в область
» WarCraft 3 / World Editor
» WarCraft 3 / Помогите с текстурами модели
» WarCraft 3 / UI-инвентарь
» WarCraft 3 / Крашится редактор старых версий
» WarCraft 3 / Помогите найти ошибку в триггере
» WarCraft 3 / Круг выбора
» WarCraft 3 / Проблема с условием
» WarCraft 3 / Оптимальная реализация события каста
» WarCraft 3 / Дроп предметов из инвентаря героя
» WarCraft 3 / Визуальная перезарядка пассивной способности
» WarCraft 3 / Герои
» WarCraft 3 / Заклинания
» WarCraft 3 / Не выпадающие предметы.
» WarCraft 3 / Рудник
» WarCraft 3 / Не проигрывается звук с триггера
» WarCraft 3 / Анимации атаки
» WarCraft 3 / Проблема с портретом
» WarCraft 3 / Цикл и Мультиборд
» WarCraft 3 / Помогите в созданием героя.
» WarCraft 3 / Удаление предметов с карты
» WarCraft 3 / Требуется помощь с редактором :(